#include "paredebruno.h"

#include <GL/glu.h>
#include "gllib/Objects.h"

ParedeBruno::ParedeBruno(float cor[3],int tipo){
    color[0] = cor[0];
    color[1] = cor[1];
    color[2] = cor[2];
    type = tipo;
}

void ParedeBruno::draw() {
    glEnable(GL_COLOR_MATERIAL);
    glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);

    float mat_specular[] = {0.7, 0.7, 0.7, 1.0};
    float shininess = 20;

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, shininess);

    type == 0 ? desenharParedeComJanela():desenharParedeSemJanela();

    glDisable(GL_COLOR_MATERIAL);
}

void ParedeBruno::desenharParedeComJanela()
{
    glPushMatrix();
    glColor3fv(color);
    glScalef(0,30,50);
    gllibCube(0.2);
    glPopMatrix();

    glPushMatrix();

    glScalef(0.15,1,1);
    for(int i=-4;i<5;i++)
    {
        for(int j=-2;j<3;j++)
        {
            if(i%2==0){
                glColor3f(1,1,1);
            }else{
                if(i%3==0 || j%2==0){
                    glColor3f(0,1,1);
                }else{
                    glColor3f(1,1,0);
                }
            }

            glTranslatef(0,j,i);
            gllibSphere(0.15,100);
            glTranslatef(0,-j,-i);
        }
    }

    glPopMatrix();
}

void ParedeBruno::desenharParedeSemJanela()
{
    glPushMatrix();
    glColor3fv(color);
    glScalef(0,30,50);
    gllibCube(0.2);
    glPopMatrix();

//    glPushMatrix();

//    glScalef(0.15,1,1);
//    for(int i=-4;i<5;i++)
//    {
//        for(int j=-2;j<3;j++)
//        {
//            if(i%2==0){
//                glColor3f(1,1,1);
//            }else{
//                if(i%3==0 || j%2==0){
//                    glColor3f(0,1,1);
//                }else{
//                    glColor3f(1,1,0);
//                }
//            }

//            glTranslatef(0,j,i);
//            gllibSphere(0.15,100);
//            glTranslatef(0,-j,-i);
//        }
//    }

//    glPopMatrix();
}

